package ro.unibuc.nautilus.domain;

import java.util.Date;
import java.util.List;
import java.util.Set;

public class Ship extends Entity {

	/**
	 * 
	 */
	private static final long serialVersionUID = 8683640918458056555L;

	public static final String CARGO = "cargo";
	public static final String TANKER = "tanker";
	public static final String CRUISE_SHIP = "cruise ship";
	
	private String name;

	private double totalCapacity;

	// capacitate utila
	private double payload;

	private double length;

	// .. pescaj
	private double draft;

	private double speed;

	private String fuel;

	private String shipType;

	private Harbour baseHarbour;

	private Harbour registrationHarbour;

	private Set<Repair> repairments;

	private Set<Employee> crew;

	private Set<Route> routes;

	private Route currentRoute;

	// define the last location known for the ship
	// and the date it was reported
	private Harbour lastLocation;

	private Date locationReportDate;

	public Ship() {

	}

	public Ship(String name, double totalCapacity, double payload,
			double length, double draft, double speed, String fuel,
			Harbour baseHarbor, Harbour registrationHarbor,
			Harbour lastLocation, Date locationReportDate) {
		super();
		this.name = name;
		this.totalCapacity = totalCapacity;
		this.payload = payload;
		this.length = length;
		this.draft = draft;
		this.speed = speed;
		this.fuel = fuel;
		this.baseHarbour = baseHarbor;
		this.registrationHarbour = registrationHarbor;
		this.lastLocation = lastLocation;
		this.locationReportDate = locationReportDate;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public double getTotalCapacity() {
		return totalCapacity;
	}

	public void setTotalCapacity(double totalCapacity) {
		this.totalCapacity = totalCapacity;
	}

	public double getPayload() {
		return payload;
	}

	public void setPayload(double payload) {
		this.payload = payload;
	}

	public double getLength() {
		return length;
	}

	public void setLength(double length) {
		this.length = length;
	}

	public double getDraft() {
		return draft;
	}

	public void setDraft(double draft) {
		this.draft = draft;
	}

	public double getSpeed() {
		return speed;
	}

	public void setSpeed(double speed) {
		this.speed = speed;
	}

	public String getFuel() {
		return fuel;
	}

	public void setFuel(String fuel) {
		this.fuel = fuel;
	}

	public String getShipType() {
		return shipType;
	}

	public void setShipType(String type) {
		this.shipType = type;
	}

	public Harbour getBaseHarbour() {
		return baseHarbour;
	}

	public void setBaseHarbour(Harbour baseHarbour) {
		this.baseHarbour = baseHarbour;
	}

	public Harbour getRegistrationHarbour() {
		return registrationHarbour;
	}

	public void setRegistrationHarbour(Harbour registrationHarbour) {
		this.registrationHarbour = registrationHarbour;
	}

	public Set<Repair> getRepairments() {
		return repairments;
	}

	public void setRepairments(Set<Repair> repairments) {
		this.repairments = repairments;
	}

	public Set<Employee> getCrew() {
		return crew;
	}

	public void setCrew(Set<Employee> crew) {
		this.crew = crew;
	}

	public Date getLocationReportDate() {
		return locationReportDate;
	}

	public void setLocationReportDate(Date locationReportDate) {
		this.locationReportDate = locationReportDate;
	}

	public Set<Route> getRoutes() {
		return routes;
	}

	public void setRoutes(Set<Route> routes) {
		this.routes = routes;
	}

	public Route getCurrentRoute() {
		return currentRoute;
	}

	public void setCurrentRoute(Route currentRoute) {
		this.currentRoute = currentRoute;
	}

	public Harbour getLastLocation() {
		return lastLocation;
	}

	public void setLastLocation(Harbour lastLocation) {
		this.lastLocation = lastLocation;
	}
	
}
